package com.taobao.shopcart.config;

import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;


@Configuration
public class RedisConfig extends CachingConfigurerSupport {

    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();  //创建了一个 RedisTemplate 的实例对象

        //默认的Key序列化器为：JdkSerializationRedisSerializer
        redisTemplate.setKeySerializer(new StringRedisSerializer()); // 设置 Redis 的键（Key）序列化器为 StringRedisSerializer，这表示 Redis 中的键将以字符串形式进行序列化。
        redisTemplate.setValueSerializer(new StringRedisSerializer()); // 设置 Redis 的键（Value）序列化器为 StringRedisSerializer，这表示 Redis 中的键将以字符串形式进行序列化。

//        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); // value序列化

        redisTemplate.setConnectionFactory(connectionFactory); // 设置 Redis 模板的连接工厂为传入的 connectionFactory，这样模板就能够通过连接工厂获取到与 Redis 服务器的连接

        return redisTemplate;
    }


}
